<?php

/* -----------------------------------------------------------------
 * 	ID:						split_page_results.php
 * 	Letzter Stand:			v2.3
 * 	zuletzt geaendert von:	cseoak
 * 	Datum:					2012/11/19
 *
 * 	Copyright (c) since 2010 commerce:SEO by Webdesign Erfurt
 * 	http://www.commerce-seo.de
 * ------------------------------------------------------------------
 * 	based on:
 * 	(c) 2000-2001 The Exchange Project  (earlier name of osCommerce)
 * 	(c) 2002-2003 osCommerce - www.oscommerce.com
 * 	(c) 2003     nextcommerce - www.nextcommerce.org
 * 	(c) 2005     xt:Commerce - www.xt-commerce.com
 * 	Released under the GNU General Public License
 * --------------------------------------------------------------- */

defined('_VALID_XTC') or die('Direct Access to this location is not allowed.');

class splitPageResults {

    // function __construct() {
    // }

    function splitPageResults(&$current_page_number, $max_rows_per_page, &$sql_query, &$query_num_rows) {

        if (empty($current_page_number))
            $current_page_number = 1;
        $pos_to = strlen($sql_query);
        $pos_from = stripos($sql_query, ' from', 0);
        $pos_group_by = stripos($sql_query, ' group by', $pos_from);
        if (($pos_group_by < $pos_to) && ($pos_group_by != false))
            $pos_to = $pos_group_by;
        $pos_having = stripos($sql_query, ' having', $pos_from);
        if (($pos_having < $pos_to) && ($pos_having != false))
            $pos_to = $pos_having;
        $pos_order_by = stripos($sql_query, ' order by', $pos_from);
        if (($pos_order_by < $pos_to) && ($pos_order_by != false))
            $pos_to = $pos_order_by;
        $reviews_count_query = xtc_db_query("select count(*) as total " . substr($sql_query, $pos_from, ($pos_to - $pos_from)));
        $reviews_count = xtc_db_fetch_array($reviews_count_query);
        $query_num_rows = $reviews_count['total'];
        $num_pages = ceil($query_num_rows / $max_rows_per_page);
        if ($current_page_number > $num_pages) {
            $current_page_number = $num_pages;
        }
        $offset = ($max_rows_per_page * ($current_page_number - 1));
        if ($offset < 0)
            $offset = 0;
        $sql_query .= " limit " . $offset . ", " . $max_rows_per_page;
    }

    function display_links($query_numrows, $max_rows_per_page, $max_page_links, $current_page_number, $parameters = '', $page_name = 'page') {
        global $PHP_SELF;
        if (xtc_not_null($parameters) && (substr($parameters, -1) != '&'))
            $parameters .= '&';

        // calculate number of pages needing links
        $num_pages = ceil($query_numrows / $max_rows_per_page);

        $pages_array = array();
        for ($i = 1; $i <= $num_pages; $i++) {
            $pages_array[] = array('id' => $i, 'text' => $i);
        }

        if ($num_pages > 1) {
            $display_links = xtc_draw_form('pages', basename($_SERVER['SCRIPT_NAME']), '', 'get');

            if ($current_page_number > 1) {
                $display_links .= '<a data-ajax="false" href="' . xtc_href_link(basename($_SERVER['SCRIPT_NAME']), $parameters . $page_name . '=' . ($current_page_number - 1), 'NONSSL') . '" class="splitPageLink">' . PREVNEXT_BUTTON_PREV . '</a>&nbsp;&nbsp;';
            } else {
                $display_links .= PREVNEXT_BUTTON_PREV . '&nbsp;&nbsp;';
            }

            $display_links .= sprintf(TEXT_RESULT_PAGE, xtc_draw_pull_down_menu($page_name, $pages_array, $current_page_number, 'onChange="this.form.submit();"'), $num_pages);

            if (($current_page_number < $num_pages) && ($num_pages != 1)) {
                $display_links .= '&nbsp;&nbsp;<a data-ajax="false" href="' . xtc_href_link(basename($_SERVER['SCRIPT_NAME']), $parameters . $page_name . '=' . ($current_page_number + 1), 'NONSSL') . '" class="splitPageLink">' . PREVNEXT_BUTTON_NEXT . '</a>';
            } else {
                $display_links .= '&nbsp;&nbsp;' . PREVNEXT_BUTTON_NEXT;
            }

            if ($parameters != '') {
                if (substr($parameters, -1) == '&')
                    $parameters = substr($parameters, 0, -1);
                $pairs = explode('&', $parameters);
                while (list(, $pair) = each($pairs)) {
                    list($key, $value) = explode('=', $pair);
                    $display_links .= xtc_draw_hidden_field(rawurldecode($key), rawurldecode($value));
                }
            }

            if (SID)
                $display_links .= xtc_draw_hidden_field(session_name(), session_id());

            $display_links .= '</form>';
        } else {
            $display_links = sprintf(TEXT_RESULT_PAGE, $num_pages, $num_pages);
        }

        return $display_links;
    }

    function display_count($query_numrows, $max_rows_per_page, $current_page_number, $text_output) {
        $to_num = ($max_rows_per_page * $current_page_number);
        if ($to_num > $query_numrows)
            $to_num = $query_numrows;
        $from_num = ($max_rows_per_page * ($current_page_number - 1));
        if ($to_num == 0) {
            $from_num = 0;
        } else {
            $from_num++;
        }

        return sprintf($text_output, $from_num, $to_num, $query_numrows);
    }

}
